package com.lin.maker.template;


import com.lin.maker.meta.Meta;

import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

public class TemplateMarkerUtils {
    public static List<Meta.FileConfigDTO.FileInfo> removeGroupFilesFromRoot(List<Meta.FileConfigDTO.FileInfo> filesInfo) {
        // 获取所有的分组
        List<Meta.FileConfigDTO.FileInfo> groupFileInfoList  = filesInfo
                .stream()
                .filter((fileInfo -> fileInfo.getGroupKey() != null))
                .collect(Collectors.toList());
        // 获取到所有分组内的文件列表
        List<Meta.FileConfigDTO.FileInfo> groupInnerFileInfoList  = groupFileInfoList.stream()
                .flatMap(fileInfo -> fileInfo.getFiles().stream())
                .collect(Collectors.toList());
        // 获取所有分组内的文件输入路径集合
        Set<String> fileInputPathSet  = groupInnerFileInfoList.stream()
                .map(Meta.FileConfigDTO.FileInfo::getInputPath)
                .collect(Collectors.toSet());
        // 移除所有输入路径在集合中的外层文件
        return filesInfo.stream()
                .filter(fileInfo -> !fileInputPathSet.contains(fileInfo.getInputPath()))
                .collect(Collectors.toList());
    }
}
